home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / pdh.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  16.1 KB  |  589 lines

  1. /*++
  2.  
  3. Copyright (C) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     PDH.H
  8.  
  9. Abstract:
  10.  
  11.     Header file for the Performance Data Helper (PDH) DLL functions.
  12.  
  13. --*/
  14.  
  15. /*
  16.  *      C/C++ Run Time Library - Version 9.0
  17.  *
  18.  *      Copyright (c) 1997, 1998 by Borland International
  19.  *      All Rights Reserved.
  20.  *
  21.  */
  22.  
  23. #ifndef _PDH_H_
  24. #define _PDH_H_
  25. #pragma option push -b
  26.  
  27.  
  28. // system include files required for datatype and constant definitions
  29.  
  30. #include <windows.h>    // necessary for data types used in this file
  31.  
  32.  
  33. #include <winperf.h>    // necessary for the Detail Level definitions
  34.  
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. typedef LONG            PDH_STATUS;
  41.  
  42. #define PDH_FUNCTION    PDH_STATUS __stdcall
  43.  
  44. // version info
  45. #define PDH_CVERSION_WIN40  0x0400
  46. #define PDH_VERSION         PDH_CVERSION_WIN40
  47.  
  48. // define severity masks
  49. #define IsSuccessSeverity(ErrorCode)    \
  50.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x00000000L) ? TRUE : FALSE)
  51. #define IsInformationalSeverity(ErrorCode)    \
  52.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x40000000L) ? TRUE : FALSE)
  53. #define IsWarningSeverity(ErrorCode)    \
  54.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x80000000L) ? TRUE : FALSE)
  55. #define IsErrorSeverity(ErrorCode)      \
  56.     ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0xC0000000L) ? TRUE : FALSE)
  57.  
  58. // data type definitions
  59.  
  60. typedef HANDLE  HCOUNTER;
  61. typedef HANDLE  HQUERY;
  62.  
  63. typedef struct _PDH_RAW_COUNTER {
  64.     DWORD       CStatus;
  65.     FILETIME    TimeStamp;
  66.     LONGLONG    FirstValue;
  67.     LONGLONG    SecondValue;
  68.     DWORD       MultiCount;
  69. } PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
  70.  
  71. typedef struct _PDH_FMT_COUNTERVALUE {
  72.     DWORD    CStatus;
  73.     union {
  74.         LONG        longValue;
  75.         double      doubleValue;
  76.         LONGLONG    largeValue;
  77.     };
  78. } PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
  79.  
  80. typedef struct _PDH_STATISTICS {
  81.     DWORD                   dwFormat;
  82.     DWORD                   count;
  83.     PDH_FMT_COUNTERVALUE    min;
  84.     PDH_FMT_COUNTERVALUE    max;
  85.     PDH_FMT_COUNTERVALUE    mean;
  86. } PDH_STATISTICS, *PPDH_STATISTICS;
  87.  
  88. typedef struct _PDH_COUNTER_PATH_ELEMENTS_A {
  89.     LPSTR   szMachineName;
  90.     LPSTR   szObjectName;
  91.     LPSTR   szInstanceName;
  92.     LPSTR   szParentInstance;
  93.     DWORD   dwInstanceIndex;
  94.     LPSTR   szCounterName;
  95. } PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
  96.  
  97. typedef struct _PDH_COUNTER_PATH_ELEMENTS_W {
  98.     LPWSTR  szMachineName;
  99.     LPWSTR  szObjectName;
  100.     LPWSTR  szInstanceName;
  101.     LPWSTR  szParentInstance;
  102.     DWORD   dwInstanceIndex;
  103.     LPWSTR  szCounterName;
  104. } PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
  105.  
  106. typedef struct _PDH_COUNTER_INFO_A {
  107.     DWORD   dwLength;
  108.     DWORD   dwType;
  109.     DWORD   CVersion;
  110.     DWORD   CStatus;
  111.     LONG    lScale;
  112.     LONG    lDefaultScale;
  113.     DWORD   dwUserData;
  114.     DWORD   dwQueryUserData;
  115.     LPSTR   szFullPath;
  116.     union   {
  117.         PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
  118.         struct {
  119.             LPSTR   szMachineName;
  120.             LPSTR   szObjectName;
  121.             LPSTR   szInstanceName;
  122.             LPSTR   szParentInstance;
  123.             DWORD   dwInstanceIndex;
  124.             LPSTR   szCounterName;
  125.         };
  126.     };
  127.     LPSTR   szExplainText;
  128.     DWORD   DataBuffer[1];
  129. } PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
  130.  
  131. typedef struct _PDH_COUNTER_INFO_W {
  132.     DWORD   dwLength;
  133.     DWORD   dwType;
  134.     DWORD   CVersion;
  135.     DWORD   CStatus;
  136.     LONG    lScale;
  137.     LONG    lDefaultScale;
  138.     DWORD   dwUserData;
  139.     DWORD   dwQueryUserData;
  140.     LPWSTR  szFullPath;
  141.     union   {
  142.         PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
  143.         struct {
  144.             LPWSTR   szMachineName;
  145.             LPWSTR   szObjectName;
  146.             LPWSTR   szInstanceName;
  147.             LPWSTR   szParentInstance;
  148.             DWORD    dwInstanceIndex;
  149.             LPWSTR   szCounterName;
  150.         };
  151.     };
  152.     LPWSTR  szExplainText;
  153.     DWORD   DataBuffer[1];
  154. } PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
  155.  
  156. // function definitions
  157.  
  158. PDH_FUNCTION 
  159. PdhGetDllVersion(
  160.     IN  LPDWORD lpdwVersion
  161. );
  162.  
  163. //
  164. //  Query Functions
  165. //
  166.  
  167. PDH_FUNCTION
  168. PdhOpenQuery (
  169.     IN      LPVOID      pReserved,
  170.     IN      DWORD       dwUserData,
  171.     IN      HQUERY      *phQuery
  172. );
  173.  
  174. PDH_FUNCTION
  175. PdhAddCounterW (
  176.     IN      HQUERY      hQuery,
  177.     IN      LPCWSTR     szFullCounterPath,
  178.     IN      DWORD       dwUserData,
  179.     IN      HCOUNTER    *phCounter
  180. );
  181.  
  182. PDH_FUNCTION
  183. PdhAddCounterA (
  184.     IN      HQUERY      hQuery,
  185.     IN      LPCSTR      szFullCounterPath,
  186.     IN      DWORD       dwUserData,
  187.     IN      HCOUNTER    *phCounter
  188. );
  189.  
  190. PDH_FUNCTION
  191. PdhRemoveCounter (
  192.     IN      HCOUNTER    hCounter
  193. );
  194.  
  195. PDH_FUNCTION
  196. PdhCollectQueryData (
  197.     IN      HQUERY      hQuery
  198. );
  199.  
  200. PDH_FUNCTION
  201. PdhCloseQuery (
  202.     IN      HQUERY      hQuery
  203. );
  204.     
  205. //
  206. //  Counter Functions
  207. //
  208.  
  209. PDH_FUNCTION
  210. PdhGetFormattedCounterValue (
  211.     IN      HCOUNTER                hCounter,
  212.     IN      DWORD                   dwFormat,
  213.     IN      LPDWORD                 lpdwType,
  214.     IN      PPDH_FMT_COUNTERVALUE   pValue
  215. );
  216.  
  217. // dwFormat flag values
  218. // 
  219. #define PDH_FMT_RAW     ((DWORD)0x00000010)
  220. #define PDH_FMT_ANSI    ((DWORD)0x00000020)
  221. #define PDH_FMT_UNICODE ((DWORD)0x00000040)
  222. #define PDH_FMT_LONG    ((DWORD)0x00000100)
  223. #define PDH_FMT_DOUBLE  ((DWORD)0x00000200)
  224. #define PDH_FMT_LARGE   ((DWORD)0x00000400)
  225. #define PDH_FMT_NOSCALE ((DWORD)0x00001000)
  226. #define PDH_FMT_1000    ((DWORD)0x00002000)
  227. #define PDH_FMT_NODATA  ((DWORD)0x00004000)
  228.  
  229. PDH_FUNCTION
  230. PdhGetRawCounterValue (
  231.     IN      HCOUNTER            hCounter,
  232.     IN      LPDWORD             lpdwType,
  233.     IN      PPDH_RAW_COUNTER    pValue
  234. );
  235.  
  236. PDH_FUNCTION
  237. PdhCalculateCounterFromRawValue (
  238.     IN      HCOUNTER                hCounter,
  239.     IN      DWORD                   dwFormat,
  240.     IN      PPDH_RAW_COUNTER        rawValue1,
  241.     IN      PPDH_RAW_COUNTER        rawValue2,
  242.     IN      PPDH_FMT_COUNTERVALUE   fmtValue
  243. );
  244.  
  245. PDH_FUNCTION
  246. PdhComputeCounterStatistics (
  247.     IN      HCOUNTER            hCounter,
  248.     IN      DWORD               dwFormat,
  249.     IN      DWORD               dwFirstEntry,
  250.     IN      DWORD               dwNumEntries,
  251.     IN      PPDH_RAW_COUNTER    lpRawValueArray,
  252.     IN      PPDH_STATISTICS     data
  253. );
  254.  
  255. PDH_FUNCTION
  256. PdhGetCounterInfoW (
  257.     IN      HCOUNTER            hCounter,
  258.     IN      BOOLEAN             bRetrieveExplainText,
  259.     IN      LPDWORD             pdwBufferSize,
  260.     IN      PPDH_COUNTER_INFO_W lpBuffer
  261. );
  262.  
  263. PDH_FUNCTION
  264. PdhGetCounterInfoA (
  265.     IN      HCOUNTER            hCounter,
  266.     IN      BOOLEAN             bRetrieveExplainText,
  267.     IN      LPDWORD             pdwBufferSize,
  268.     IN      PPDH_COUNTER_INFO_A lpBuffer
  269. );
  270.  
  271. #define PDH_MAX_SCALE    (7L)
  272. #define PDH_MIN_SCALE   (-7L)
  273.  
  274. PDH_FUNCTION
  275. PdhSetCounterScaleFactor (
  276.     IN      HCOUNTER    hCounter,
  277.     IN      LONG        lFactor
  278. );
  279. //
  280. //   Browsing and enumeration functions
  281. //
  282. PDH_FUNCTION
  283. PdhConnectMachineW (
  284.     IN      LPCWSTR  szMachineName
  285. );
  286.  
  287. PDH_FUNCTION
  288. PdhConnectMachineA (
  289.     IN      LPCSTR  szMachineName
  290. );
  291.  
  292. PDH_FUNCTION
  293. PdhEnumMachinesW (
  294.     IN      LPCWSTR szReserved,
  295.     IN      LPWSTR  mszMachineList,
  296.     IN      LPDWORD pcchBufferSize
  297. );
  298.  
  299. PDH_FUNCTION
  300. PdhEnumMachinesA (
  301.     IN      LPCSTR   szReserved,
  302.     IN      LPSTR    mszMachineList,
  303.     IN      LPDWORD  pcchBufferSize
  304. );
  305.  
  306. PDH_FUNCTION
  307. PdhEnumObjectsW (
  308.     IN      LPCWSTR szReserved,
  309.     IN      LPCWSTR szMachineName,
  310.     IN      LPWSTR  mszObjectList,
  311.     IN      LPDWORD pcchBufferSize,
  312.     IN      DWORD   dwDetailLevel,
  313.     IN      BOOL    bRefresh
  314. );
  315.  
  316. PDH_FUNCTION
  317. PdhEnumObjectsA (
  318.     IN      LPCSTR  szReserved,
  319.     IN      LPCSTR  szMachineName,
  320.     IN      LPSTR   mszObjectList,
  321.     IN      LPDWORD pcchBufferSize,
  322.     IN      DWORD   dwDetailLevel,
  323.     IN      BOOL    bRefresh
  324. );
  325.  
  326. PDH_FUNCTION
  327. PdhEnumObjectItemsW (
  328.     IN      LPCWSTR szReserved,
  329.     IN      LPCWSTR szMachineName,
  330.     IN      LPCWSTR szObjectName,
  331.     IN      LPWSTR  mszCounterList,
  332.     IN      LPDWORD pcchCounterListLength,
  333.     IN      LPWSTR  mszInstanceList,
  334.     IN      LPDWORD pcchInstanceListLength,
  335.     IN      DWORD   dwDetailLevel,
  336.     IN      DWORD   dwFlags
  337. );
  338.  
  339. PDH_FUNCTION
  340. PdhEnumObjectItemsA (
  341.     IN      LPCSTR  szReserved,
  342.     IN      LPCSTR  szMachineName,
  343.     IN      LPCSTR  szObjectName,
  344.     IN      LPSTR   mszCounterList,
  345.     IN      LPDWORD pcchCounterListLength,
  346.     IN      LPSTR   mszInstanceList,
  347.     IN      LPDWORD pcchInstanceListLength,
  348.     IN      DWORD   dwDetailLevel,
  349.     IN      DWORD   dwFlags
  350. );
  351.  
  352. PDH_FUNCTION
  353. PdhMakeCounterPathW (
  354.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  355.     IN      LPWSTR                      szFullPathBuffer,
  356.     IN      LPDWORD                     pcchBufferSize,
  357.     IN      DWORD                       dwFlags
  358. );
  359.  
  360. PDH_FUNCTION
  361. PdhMakeCounterPathA (
  362.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  363.     IN      LPSTR                       szFullPathBuffer,
  364.     IN      LPDWORD                     pcchBufferSize,
  365.     IN      DWORD                       dwFlags
  366. );
  367.  
  368. PDH_FUNCTION
  369. PdhParseCounterPathW (
  370.     IN      LPCWSTR                     szFullPathBuffer,
  371.     IN      PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
  372.     IN      LPDWORD                     pdwBufferSize,
  373.     IN      DWORD                       dwFlags
  374. );
  375.  
  376. PDH_FUNCTION
  377. PdhParseCounterPathA (
  378.     IN      LPCSTR                      szFullPathBuffer,
  379.     IN      PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
  380.     IN      LPDWORD                     pdwBufferSize,
  381.     IN      DWORD                       dwFlags
  382. );
  383.  
  384. PDH_FUNCTION
  385. PdhParseInstanceNameW (
  386.     IN      LPCWSTR szInstanceString,
  387.     IN      LPWSTR  szInstanceName,
  388.     IN      LPDWORD pcchInstanceNameLength,
  389.     IN      LPWSTR  szParentName,
  390.     IN      LPDWORD pcchParentNameLength,
  391.     IN      LPDWORD lpIndex
  392. );
  393.  
  394. PDH_FUNCTION
  395. PdhParseInstanceNameA (
  396.     IN      LPCSTR  szInstanceString,
  397.     IN      LPSTR   szInstanceName,
  398.     IN      LPDWORD pcchInstanceNameLength,
  399.     IN      LPSTR   szParentName,
  400.     IN      LPDWORD pcchParentNameLength,
  401.     IN      LPDWORD lpIndex
  402. );
  403.  
  404. PDH_FUNCTION
  405. PdhValidatePathW (
  406.     IN      LPCWSTR szFullPathBuffer
  407. );
  408.  
  409. PDH_FUNCTION
  410. PdhValidatePathA (
  411.     IN      LPCSTR  szFullPathBuffer
  412. );
  413.  
  414. PDH_FUNCTION
  415. PdhGetDefaultPerfObjectW (
  416.     IN      LPCWSTR szReserved,
  417.     IN      LPCWSTR szMachineName,
  418.     IN      LPWSTR  szDefaultObjectName,
  419.     IN      LPDWORD pcchBufferSize
  420. );
  421.  
  422. PDH_FUNCTION
  423. PdhGetDefaultPerfObjectA (
  424.     IN      LPCSTR  szReserved,
  425.     IN      LPCSTR  szMachineName,
  426.     IN      LPSTR   szDefaultObjectName,
  427.     IN      LPDWORD pcchBufferSize
  428. );
  429.  
  430. PDH_FUNCTION
  431. PdhGetDefaultPerfCounterW (
  432.     IN      LPCWSTR szReserved,
  433.     IN      LPCWSTR szMachineName,
  434.     IN      LPCWSTR szObjectName,
  435.     IN      LPWSTR  szDefaultCounterName,
  436.     IN      LPDWORD pcchBufferSize
  437. );
  438.  
  439. PDH_FUNCTION
  440. PdhGetDefaultPerfCounterA (
  441.     IN      LPCSTR  szReserved,
  442.     IN      LPCSTR  szMachineName,
  443.     IN      LPCSTR  szObjectName,
  444.     IN      LPSTR   szDefaultCounterName,
  445.     IN      LPDWORD pcchBufferSize
  446. );
  447.  
  448. typedef PDH_STATUS (__stdcall *CounterPathCallBack)(DWORD);
  449.  
  450. typedef struct _BrowseDlgConfig_W {
  451.     // Configuration flags
  452.     DWORD   bIncludeInstanceIndex:1,
  453.             bSingleCounterPerAdd:1,
  454.             bSingleCounterPerDialog:1,
  455.             bLocalCountersOnly:1,
  456.             bWildCardInstances:1,
  457.             bHideDetailBox:1,
  458.             bInitializePath:1,
  459.             bDisableMachineSelection:1,
  460.             bReserved:24;
  461.  
  462.     HWND                hWndOwner;
  463.     LPWSTR              szReserved;
  464.     LPWSTR              szReturnPathBuffer;
  465.     DWORD               cchReturnPathLength;
  466.     CounterPathCallBack pCallBack;
  467.     DWORD               dwCallBackArg;
  468.     PDH_STATUS          CallBackStatus;
  469.     DWORD               dwDefaultDetailLevel;
  470.     LPWSTR              szDialogBoxCaption;
  471. } PDH_BROWSE_DLG_CONFIG_W, *PPDH_BROWSE_DLG_CONFIG_W;
  472.  
  473. typedef struct _BrowseDlgConfig_A {
  474.     // Configuration flags
  475.     DWORD   bIncludeInstanceIndex:1,
  476.             bSingleCounterPerAdd:1,
  477.             bSingleCounterPerDialog:1,
  478.             bLocalCountersOnly:1,
  479.             bWildCardInstances:1,
  480.             bHideDetailBox:1,
  481.             bInitializePath:1,
  482.             bDisableMachineSelection:1,
  483.             bReserved:24;
  484.  
  485.     HWND                hWndOwner;
  486.     LPSTR               szReserved;
  487.     LPSTR               szReturnPathBuffer;
  488.     DWORD               cchReturnPathLength;
  489.     CounterPathCallBack pCallBack;
  490.     DWORD               dwCallBackArg;
  491.     PDH_STATUS          CallBackStatus;
  492.     DWORD               dwDefaultDetailLevel;
  493.     LPSTR               szDialogBoxCaption;
  494. } PDH_BROWSE_DLG_CONFIG_A, *PPDH_BROWSE_DLG_CONFIG_A;
  495.  
  496. PDH_FUNCTION
  497. PdhBrowseCountersW (
  498.     IN      PPDH_BROWSE_DLG_CONFIG_W    pBrowseDlgData
  499. );
  500.  
  501. PDH_FUNCTION
  502. PdhBrowseCountersA (
  503.     IN      PPDH_BROWSE_DLG_CONFIG_A    pBrowseDlgData
  504. );
  505.  
  506. PDH_FUNCTION
  507. PdhExpandCounterPathW (
  508.     IN      LPCWSTR     szWildCardPath,
  509.     IN      LPWSTR      mszExpandedPathList,
  510.     IN      LPDWORD     pcchPathListLength
  511. );
  512.  
  513. PDH_FUNCTION
  514. PdhExpandCounterPathA (
  515.     IN      LPCSTR      szWildCardPath,
  516.     IN      LPSTR       mszExpandedPathList,
  517.     IN      LPDWORD     pcchPathListLength
  518. );
  519.  
  520. //
  521. //   Unicode/ANSI compatibility section
  522. //
  523. #ifdef UNICODE
  524. #ifndef _UNICODE
  525. #define _UNICODE
  526. #endif
  527. #endif
  528.  
  529. #ifdef _UNICODE
  530. #ifndef UNICODE
  531. #define UNICODE
  532. #endif
  533. #endif
  534.  
  535. #ifdef UNICODE
  536. // start of UNICODE definitions
  537. #define PdhAddCounter                PdhAddCounterW
  538. #define PdhGetCounterInfo           PdhGetCounterInfoW
  539. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_W
  540. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_W
  541. #define PdhConnectMachine           PdhConnectMachineW
  542. #define PdhEnumMachines             PdhEnumMachinesW
  543. #define PdhEnumObjects              PdhEnumObjectsW
  544. #define PdhEnumObjectItems          PdhEnumObjectItemsW
  545. #define PdhMakeCounterPath          PdhMakeCounterPathW
  546. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_W
  547. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_W
  548. #define PdhParseCounterPath         PdhParseCounterPathW
  549. #define PdhParseInstanceName        PdhParseInstanceNameW
  550. #define PdhValidatePath             PdhValidatePathW
  551. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectW
  552. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterW
  553. #define PdhBrowseCounters           PdhBrowseCountersW
  554. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_W
  555. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_W
  556. #define PdhExpandCounterPath        PdhExpandCounterPathW
  557. // end of UNICODE definitions
  558. #else 
  559. // start of ANSI definitions
  560. #define PdhAddCounter                PdhAddCounterA
  561. #define PdhGetCounterInfo           PdhGetCounterInfoA
  562. #define PDH_COUNTER_INFO            PDH_COUNTER_INFO_A
  563. #define PPDH_COUNTER_INFO            PPDH_COUNTER_INFO_A
  564. #define PdhConnectMachine           PdhConnectMachineA
  565. #define PdhEnumMachines             PdhEnumMachinesA
  566. #define PdhEnumObjects              PdhEnumObjectsA
  567. #define PdhEnumObjectItems          PdhEnumObjectItemsA
  568. #define PdhMakeCounterPath          PdhMakeCounterPathA
  569. #define PDH_COUNTER_PATH_ELEMENTS   PDH_COUNTER_PATH_ELEMENTS_A
  570. #define PPDH_COUNTER_PATH_ELEMENTS  PPDH_COUNTER_PATH_ELEMENTS_A
  571. #define PdhParseCounterPath         PdhParseCounterPathA
  572. #define PdhParseInstanceName        PdhParseInstanceNameA
  573. #define PdhValidatePath             PdhValidatePathA
  574. #define PdhGetDefaultPerfObject     PdhGetDefaultPerfObjectA
  575. #define PdhGetDefaultPerfCounter    PdhGetDefaultPerfCounterA
  576. #define PdhBrowseCounters           PdhBrowseCountersA
  577. #define PDH_BROWSE_DLG_CONFIG       PDH_BROWSE_DLG_CONFIG_A
  578. #define PPDH_BROWSE_DLG_CONFIG      PPDH_BROWSE_DLG_CONFIG_A
  579. #define PdhExpandCounterPath        PdhExpandCounterPathA
  580. // end of ANSI definitions
  581. #endif  // UNICODE
  582.  
  583. #ifdef __cplusplus
  584. }
  585. #endif
  586.  
  587. #pragma option pop
  588. #endif //_PDH_H_
  589.